package com.example.questionnaire.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.common.utils.PageUtils;
import com.example.questionnaire.dto.UserAddDto;
import com.example.questionnaire.entity.PieEntity;
import com.example.questionnaire.entity.ResultEntity;
import com.example.questionnaire.entity.TeamEntity;
import com.example.questionnaire.entity.UserEntity;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 
 *
 * @author hsz
 * @email 1416446590@qq.com
 * @date 2022-10-29 09:51:04
 */
public interface UserService extends IService<UserEntity> {

    /**
     * 用户注册方法
     * @param user 用户的数据对象
     */
    int reg(UserEntity user);

    /**
     * 用户登录方法
     * @param username 输入的用户名
     * @param password 输入的密码
     * @return 返回当前匹配的用户数据，没有则为null
     */
    int login(String username,String password);

    UserEntity findByUsername(String  username);

    UserEntity findByTelephone(String telephone);

    String getVcode(String telephone);

    int findPassword(String telephone,String password);

    void setAuthority(String username);

    /*
     *显示平台全部人员信息
     */
    PageUtils queryPage(Map<String, Object> params);


    /**
     * 显示管理员信息
     * @param params
     * @return
     */
    PageUtils queryPage1(Map<String,Object>params);
    /**
     * 显示租户信息
     * @param params
     * @return
     */
    PageUtils queryPage2(Map<String,Object>params);
    /**
     * 显示用户信息
     * @param params
     * @return
     */
    PageUtils queryPage3(Map<String,Object>params);
    /**
     * 注册(用户,租户)
     * @param params
     * @return
     */
    int userEnroll(Map<String,Object>params);

    /**
     * 添加信息(用户,租户)
     * @param userEntity
     * @return
     */
    int addUserInfo(UserEntity userEntity);

    /**
     * 添加相关联信息(群组,租户)
     * @param userAddDto
     * @return
     */
    int addUserTeamInfo(UserAddDto userAddDto);



    /**
     * 删除信息(用户,租户)
     * @param userEntity
     * @return
     */
    int delUserInfoById(UserEntity userEntity);

    /**
     * 根据用户名精准查询(用户,租户)
     * @param params
     * @return
     */
    PageUtils queryByUserName(Map<String, Object> params);

    /**
     * 编辑修改用户信息(用户,租户)
     * @param userEntity
     * @return
     */
    void modifyUserInfo(UserEntity userEntity);

    int expenseUtoT(int userId, BigDecimal money);


    int addMToT(int memberId, TeamEntity team);

    int removeMFromT(int memberId, TeamEntity team);


    /**
     * 显示租户下的所有群组信息
     * @param params
     * @return
     */
    PageUtils queryTeamPage(Map<String,Object>params);

    /**
     * 显示租户下的所有用户的问卷信息
     * @param params
     * @return
     */
    PageUtils queryTenantQuestionnairePage(Map<String,Object>params);

    PageUtils queryMNoInT(Map<String, Object> params);

    UserEntity queryByUserId(int id);

    List<PieEntity>analysis(Integer questionnaireId);

}

